stylecontext: Split out a function
authorBenjamin Otte <otte@redhat.com>
Sat, 17 Nov 2012 12:23:44 +0000 (13:23 +0100)
committerBenjamin Otte <otte@redhat.com>
Sun, 18 Nov 2012 20:55:43 +0000 (21:55 +0100)
The function is used in multiple places, so split it out. In particular
because I'm about to change it.

gtk/gtkcsscomputedvalues.c
gtk/gtkcsscomputedvaluesprivate.h
gtk/gtkstylecontext.c

index 339be02ad79f445ac0635961a4beb3146547b697..7ab703594107a97e43b9fd27ea30b738851920b1 100644 (file)
@@ -604,3 +604,21 @@ _gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values)
   values->animations = NULL;
 }
 
+GtkBitmask *
+_gtk_css_computed_values_compute_dependencies (GtkCssComputedValues *values,
+                                               const GtkBitmask     *parent_changes)
+{
+  GtkBitmask *changes;
+
+  g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), _gtk_bitmask_new ());
+
+  changes = _gtk_bitmask_copy (parent_changes);
+  changes = _gtk_bitmask_intersect (changes, values->depends_on_parent);
+  if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR))
+    changes = _gtk_bitmask_union (changes, values->depends_on_color);
+  if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE))
+    changes = _gtk_bitmask_union (changes, values->depends_on_font_size);
+
+  return changes;
+}
+
index 28afec3807157aaaad9fb62bbbdfbdfe3e15974c..5c88c72a335ed608d2951be7b91400c323376467 100644 (file)
@@ -87,6 +87,8 @@ GtkCssValue *           _gtk_css_computed_values_get_intrinsic_value  (GtkCssCom
                                                                        guint                     id);
 GtkBitmask *            _gtk_css_computed_values_get_difference       (GtkCssComputedValues     *values,
                                                                        GtkCssComputedValues     *other);
+GtkBitmask *            _gtk_css_computed_values_compute_dependencies (GtkCssComputedValues     *values,
+                                                                       const GtkBitmask         *parent_changes);
 
 void                    _gtk_css_computed_values_create_animations    (GtkCssComputedValues     *values,
                                                                        GtkCssComputedValues     *parent_values,
index 8a193cc65d1c7579d16b9c4e00b0bafafb488ca7..312ae15ee8e873a8c5f6a47e75c27731c65ba87a 100644 (file)
@@ -2955,12 +2955,7 @@ gtk_style_context_update_cache (GtkStyleContext  *context,
       StyleData *data = value;
       GtkBitmask *changes;
 
-      changes = _gtk_bitmask_copy (parent_changes);
-      changes = _gtk_bitmask_intersect (changes, data->store->depends_on_parent);
-      if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR))
-        changes = _gtk_bitmask_union (changes, data->store->depends_on_color);
-      if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE))
-        changes = _gtk_bitmask_union (changes, data->store->depends_on_font_size);
+      changes = _gtk_css_computed_values_compute_dependencies (data->store, parent_changes);
 
       if (!_gtk_bitmask_is_empty (changes))
        build_properties (context, data->store, info, changes);
@@ -3157,12 +3152,7 @@ _gtk_style_context_validate (GtkStyleContext  *context,
     }
   else
     {
-      changes = _gtk_bitmask_copy (parent_changes);
-      changes = _gtk_bitmask_intersect (changes, current->store->depends_on_parent);
-      if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR))
-        changes = _gtk_bitmask_union (changes, current->store->depends_on_color);
-      if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE))
-        changes = _gtk_bitmask_union (changes, current->store->depends_on_font_size);
+      changes = _gtk_css_computed_values_compute_dependencies (current->store, parent_changes);
 
       gtk_style_context_update_cache (context, parent_changes);
     }